Labo d'enrichissement
Comparaison de fichiers
Retour à la page du cours
Voyez la solution de ce labo ici.
But
Produire un script qui demande à l'usager d'entrer deux chemins valides (comme d'habitude) vers des fichiers texte (pas besoin de valider ce point), puis qui compare les deux fichiers une ligne à la fois afin de souligner les différences.
Ajoutons des détails
- Le script doit aussi demander un chemin vers un fichier de sortie (pas besoin de valider quoi que ce soit ici). Si l'usager n'entre rien, la sortie doit se faire à l'écran. S'il entre quelque chose, la sortie doit être envoyée dans le fichier demandé.
- Le script doit terminer ses comparaisons en comparant les longueurs des fichiers (je vous laisse trouver comment faire ça, c'est tout simple). Si les fichiers n'ont pas la même longueur, ce fait doit être affiché, avec les 2 longueurs.
Suggestions
- C'est peut-être plus simple de toujours envoyer la sortie dans un fichier temporaire quelconque, peu importe le choix de l'usager. Une fois les comparaisons terminées, vous pouvez afficher le contenu du fichier temporaire à l'écran, ou le copier dans le fichier que l'usager voulait. N'oubliez pas d'effacer le fichier temporaire dans ce cas!
- Vous remarquerez sans doute que lorsque vous utilisez write-output pour afficher une variable au milieu d'une phrase, il n'y a pas de problème. Par contre, si vous tentez d'afficher une case d'un tableau, ça donne des résultats étranges. Trouvez le moyen de contourner ça!
- C'est peut-être plus joli d'utiliser des boucles for plutôt que foreach dans ce cas-ci, puisqu'on doit comparer deux fichiers à la fois... Du coup, ça vous ferait pratiquer les for en PowerShell, qui sont différents des for VB.NET.
- Si vos deux fichiers ont un nombre de lignes différents, inutile de tenter de comparer les lignes qui n'existent pas dans le fichier le plus court... Pensez à ça!
Exemple d'exécution
Tentez de reproduire ceci le plus fidèlement possible:

Fichiers texte
Voici les fichiers texte a.txt et b.txt que j'ai utilisé pour tester mon script et obtenir les résultats ci-dessus.
La remise
Comme il s'agit d'un exercice d'enrichissement, vous n'avez pas à le remettre - il ne sera pas noté. L'idée est simplement de vous permettre d'aller plus loin si vous avez été assez rapide pour tout faire jusqu'à présent. La solution sera éventuellement présentée en classe pour le bien de tous.